﻿using System.Collections.Generic;
using PgBirdie.Core.Model;
using PgBirdie.Core.Model.Database.Data;
using PgBirdie.Core.Model.Database.Structure;
using PgBirdie.Core.Model.Database.Structure.Constraint;
using PgBirdie.Core.Model.Database.Structure.Index;

namespace PgBirdie.Core.Service.Compare
{
    public interface ICompareExtractService
    {
        IDictionary<PersistenceType, IDictionary<string, PgSchema>> GetSchemas(PgDatabase source, PgDatabase target);
        IDictionary<PersistenceType, IDictionary<string, PgSequence>> GetSequences(PgDatabase source, PgDatabase target);
        IDictionary<PersistenceType, IDictionary<string, PgTable>> GetTables(PgDatabase source, PgDatabase target);
        IDictionary<PersistenceType, IDictionary<string, PgColumn>> GetColumns(PgDatabase source, PgDatabase target);
        IDictionary<PersistenceType, IDictionary<string, PgIndex>> GetIndexes(PgDatabase source, PgDatabase target);        
        IDictionary<PersistenceType, IDictionary<string, PgConstraintBase>> GetConstraints(PgDatabase source, PgDatabase target);
        IDictionary<PersistenceType, IDictionary<string, PgDataRow>> GetDataRows(PgDatabase source, PgDatabase target);

        IDictionary<PersistenceType, IDictionary<string, PgColumn>> GetColumnsFromTable(PgTable source, PgTable target);
    }
}